import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import 'animate.css'
// 关闭vue的生产环境提示
Vue.config.productionTip = false

Vue.use(ElementUI)
// 路由钩子函数有哪些
  // 1.全局守卫 router.beforeEach router.afterEach 
  // 2. 组件内部守卫 beforeRouteEnter  beforeRouteUpdate  beforeRouteLeave
  // 3.路由独享守卫 beforeEnter





new Vue({
  router,
  store,
  data(){
    return {
      name:"根实例"
    }
  },
  render: h => h(App)
}).$mount('#app')
// 全局路由守卫    每一次路由跳转都会触发
// 全局前置守卫  全局后置守卫
router.beforeEach((to,from,next)=>{
  // to---即将进入的组件路由信息   fullPath  path name meta params query 
  // from --即将离开组件的路由信息 fullPath  path name meta params query
  console.log(to,"--------")
  console.log(from,"*************")
  
  // 去到about页面 隐藏菜单
  // 其他页面都显示
  // 利用vuex 来显示隐藏ui
  if(to.name=="About"){
    store.dispatch('actNav',false)
  }else{
    store.dispatch('actNav',true)
  }


  //路由守卫的使用场景   拦截token 如果未登录 拦截跳转
  // 菜单级别权限
  // 拦截身份状态码 ，去后端请求 路由表信息 动态添加路由表
  // 根据路由表生成菜单
 
      // let power=localStorage.power;//取出权限状态码
      // // getRole(power).then(res=>{ })
      // let res=[{path:"/cate",name:"cate",meta:{title:"分类"}},  {path:"/vip",name:"vip",meta:{title:'会员中心'}},
      //   {path:"/address",name:"address",meta:{title:'地址管理'}}
      // ]
      // function fitlerRoutes(res){
      //     let routes=res.map(item=>{
         
      //         let rou= {
      //           path:item.path,
      //           name:item.name,
      //           meta:item.meta,
      //           component:()=>import(`@/views/${item.name}/index.vue`)
      //         }
      //         console.log(1111)
      //         // router.addRoute('',rou)
      //         return rou 
      //     })

      //     return routes//返回整理好的路由表
      // }
      // // fitlerRoutes(res)
      // console.log(fitlerRoutes(res),"整理的路由表")
      // let myroutes=fitlerRoutes(res);

      // // 动态添加路由表 router.addRoutes()
      // //  router.addRoute({path:"/home",})//每次添加一个动态路由
      //   // router.addRoutes() 添加多个动态路由
      //   // router.addRoutes(myroutes)
      //   [...router.options.routes,...myroutes].forEach(element => {
      //       router.addRoute(element);
      //   });
      
      // console.log(router.options.routes,"----路由表信息-----")
      // next({...to})
   

  // if(to.name=="order"){
  //   if(localStorage.token){
  //     next();
  //   }else{
  //     next("/mine") //next("路由path路径 跳转")
  //   }
  // }
  // next() //继续执行 
  // next(false) 停留到当前路由
  // next({路由信息})  {path:""}  '/path'
  // next(vm=>{ //回调函数处理数据
  //   vm
  // })
  next()  //继续执行路由跳转  


})

// 后置守卫  路由跳转之后触发
router.afterEach((to,from)=>{
  
})